package com.cike.sparkstudy.sql.scala

import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}

/**
  * DataFrame的一些通用操作
  */
object DataFrameOperation {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("DataFrameOperation")
    val sc = new SparkContext(conf)

    val sqlContext = new SQLContext(sc)

    val dataFrame = sqlContext.read.json("/developerCodes/test/students.json")

    //展示jsonDF数据
    println("展示JsonDF数据")
    dataFrame.show()
    //输出元数据
    println("输出元数据")
    dataFrame.printSchema()
    // 查询某列所有的数据
    println("查询某列所有的数据")
    dataFrame.select("name").show()
    // 查询某几列所有的数据，并对列进行计算
    println("查询某几列所有的数据，并对列进行计算")
    dataFrame.select(dataFrame("name"),dataFrame("age")+1).show()

    // 根据某一列的值进行过滤
    println("根据某一列的值进行过滤")
    dataFrame.filter(dataFrame("age")>17).show()

    // 根据某一列进行分组，然后进行聚
    println("根据某一列进行分组，然后进行聚合")
    dataFrame.groupBy("age").count().show()


  }

}
